using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Workspace
{
    /// <summary>
    /// <para>Create Cloud Storage Connection File</para>
    /// <para>Creates a connection file for ArcGIS-supported cloud storage. This tool allows existing raster geoprocessing tools to write cloud raster format (CRF) datasets into the cloud storage bucket or read raster datasets (not limited to CRF) stored in the cloud storage as input.</para>
    /// <para>为支持 ArcGIS 的云存储创建连接文件。此工具允许现有栅格地理处理工具将云栅格格式 （CRF） 数据集写入云存储桶或读取存储在云存储中的栅格数据集（不限于 CRF）作为输入。</para>
    /// </summary>    
    [DisplayName("Create Cloud Storage Connection File")]
    public class CreateCloudStorageConnectionFile : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateCloudStorageConnectionFile()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_out_folder_path">
        /// <para>Connection File Location</para>
        /// <para>The folder path where the connection file will be created.</para>
        /// <para>将在其中创建连接文件的文件夹路径。</para>
        /// </param>
        /// <param name="_out_name">
        /// <para>Connection File Name</para>
        /// <para>The name of the cloud storage connection file.</para>
        /// <para>云存储连接文件的名称。</para>
        /// </param>
        /// <param name="_service_provider">
        /// <para>Service Provider</para>
        /// <para><xdoc>
        ///   <para>Specifies the cloud storage service provider.</para>
        ///   <bulletList>
        ///     <bullet_item>Azure—The service provider will be Microsoft Azure.</bullet_item><para/>
        ///     <bullet_item>Amazon—The service provider will be Amazon S3.</bullet_item><para/>
        ///     <bullet_item>Google—The service provider will be Google Cloud Storage.</bullet_item><para/>
        ///     <bullet_item>Alibaba—The service provider will be Alibaba Cloud Storage.</bullet_item><para/>
        ///     <bullet_item>WebHDFS—The service provider will be WebHDFS.</bullet_item><para/>
        ///     <bullet_item>MinIO—The service provider will be MinIO.</bullet_item><para/>
        ///     <bullet_item>Azure Data Lake—The service provider will be Azure Data Lake.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定云存储服务提供商。</para>
        ///   <bulletList>
        ///     <bullet_item>Azure - 服务提供商将是 Microsoft Azure。</bullet_item><para/>
        ///     <bullet_item>Amazon - 服务提供商将是 Amazon S3。</bullet_item><para/>
        ///     <bullet_item>Google - 服务提供商将是 Google Cloud Storage。</bullet_item><para/>
        ///     <bullet_item>阿里巴巴 - 服务提供商将是阿里云存储。</bullet_item><para/>
        ///     <bullet_item>WebHDFS - 服务提供商将是 WebHDFS。</bullet_item><para/>
        ///     <bullet_item>MinIO—服务提供程序将为 MinIO。</bullet_item><para/>
        ///     <bullet_item>Azure Data Lake - 服务提供商将是 Azure Data Lake。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_bucket_name">
        /// <para>Bucket (Container) Name</para>
        /// <para>The name of the cloud storage container where the raster dataset will be stored. Many cloud providers also call it a bucket.</para>
        /// <para>将存储栅格数据集的云存储容器的名称。许多云提供商也将其称为存储桶。</para>
        /// </param>
        public CreateCloudStorageConnectionFile(object _out_folder_path, object _out_name, _service_provider_value? _service_provider, object _bucket_name)
        {
            this._out_folder_path = _out_folder_path;
            this._out_name = _out_name;
            this._service_provider = _service_provider;
            this._bucket_name = _bucket_name;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Cloud Storage Connection File";

        public override string CallName => "management.CreateCloudStorageConnectionFile";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_out_folder_path, _out_name, _service_provider.GetGPValue(), _bucket_name, _access_key_id, _secret_access_key, _region, _end_point, _config_options, _out_connection, _folder];

        /// <summary>
        /// <para>Connection File Location</para>
        /// <para>The folder path where the connection file will be created.</para>
        /// <para>将在其中创建连接文件的文件夹路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Connection File Location")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_folder_path { get; set; }


        /// <summary>
        /// <para>Connection File Name</para>
        /// <para>The name of the cloud storage connection file.</para>
        /// <para>云存储连接文件的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Connection File Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_name { get; set; }


        /// <summary>
        /// <para>Service Provider</para>
        /// <para><xdoc>
        ///   <para>Specifies the cloud storage service provider.</para>
        ///   <bulletList>
        ///     <bullet_item>Azure—The service provider will be Microsoft Azure.</bullet_item><para/>
        ///     <bullet_item>Amazon—The service provider will be Amazon S3.</bullet_item><para/>
        ///     <bullet_item>Google—The service provider will be Google Cloud Storage.</bullet_item><para/>
        ///     <bullet_item>Alibaba—The service provider will be Alibaba Cloud Storage.</bullet_item><para/>
        ///     <bullet_item>WebHDFS—The service provider will be WebHDFS.</bullet_item><para/>
        ///     <bullet_item>MinIO—The service provider will be MinIO.</bullet_item><para/>
        ///     <bullet_item>Azure Data Lake—The service provider will be Azure Data Lake.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定云存储服务提供商。</para>
        ///   <bulletList>
        ///     <bullet_item>Azure - 服务提供商将是 Microsoft Azure。</bullet_item><para/>
        ///     <bullet_item>Amazon - 服务提供商将是 Amazon S3。</bullet_item><para/>
        ///     <bullet_item>Google - 服务提供商将是 Google Cloud Storage。</bullet_item><para/>
        ///     <bullet_item>阿里巴巴 - 服务提供商将是阿里云存储。</bullet_item><para/>
        ///     <bullet_item>WebHDFS - 服务提供商将是 WebHDFS。</bullet_item><para/>
        ///     <bullet_item>MinIO—服务提供程序将为 MinIO。</bullet_item><para/>
        ///     <bullet_item>Azure Data Lake - 服务提供商将是 Azure Data Lake。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Service Provider")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _service_provider_value? _service_provider { get; set; }

        public enum _service_provider_value
        {
            /// <summary>
            /// <para>Azure</para>
            /// <para>Azure—The service provider will be Microsoft Azure.</para>
            /// <para>Azure - 服务提供商将是 Microsoft Azure。</para>
            /// </summary>
            [Description("Azure")]
            [GPEnumValue("AZURE")]
            _AZURE,

            /// <summary>
            /// <para>Amazon</para>
            /// <para>Amazon—The service provider will be Amazon S3.</para>
            /// <para>Amazon - 服务提供商将是 Amazon S3。</para>
            /// </summary>
            [Description("Amazon")]
            [GPEnumValue("AMAZON")]
            _AMAZON,

            /// <summary>
            /// <para>Google</para>
            /// <para>Google—The service provider will be Google Cloud Storage.</para>
            /// <para>Google - 服务提供商将是 Google Cloud Storage。</para>
            /// </summary>
            [Description("Google")]
            [GPEnumValue("GOOGLE")]
            _GOOGLE,

            /// <summary>
            /// <para>Alibaba</para>
            /// <para>Alibaba—The service provider will be Alibaba Cloud Storage.</para>
            /// <para>阿里巴巴 - 服务提供商将是阿里云存储。</para>
            /// </summary>
            [Description("Alibaba")]
            [GPEnumValue("ALIBABA")]
            _ALIBABA,

            /// <summary>
            /// <para>WebHDFS</para>
            /// <para>WebHDFS—The service provider will be WebHDFS.</para>
            /// <para>WebHDFS - 服务提供商将是 WebHDFS。</para>
            /// </summary>
            [Description("WebHDFS")]
            [GPEnumValue("WEBHDFS")]
            _WEBHDFS,

            /// <summary>
            /// <para>MinIO</para>
            /// <para>MinIO—The service provider will be MinIO.</para>
            /// <para>MinIO—服务提供程序将为 MinIO。</para>
            /// </summary>
            [Description("MinIO")]
            [GPEnumValue("MINIO")]
            _MINIO,

            /// <summary>
            /// <para>Azure Data Lake</para>
            /// <para>Azure Data Lake—The service provider will be Azure Data Lake.</para>
            /// <para>Azure Data Lake - 服务提供商将是 Azure Data Lake。</para>
            /// </summary>
            [Description("Azure Data Lake")]
            [GPEnumValue("AZUREDATALAKE")]
            _AZUREDATALAKE,

        }

        /// <summary>
        /// <para>Bucket (Container) Name</para>
        /// <para>The name of the cloud storage container where the raster dataset will be stored. Many cloud providers also call it a bucket.</para>
        /// <para>将存储栅格数据集的云存储容器的名称。许多云提供商也将其称为存储桶。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Bucket (Container) Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _bucket_name { get; set; }


        /// <summary>
        /// <para>Access Key ID (Account Name)</para>
        /// <para>The access key ID string for the specific cloud storage type. It can also be the account name, as is the case with Azure.</para>
        /// <para>特定云存储类型的访问密钥 ID 字符串。它也可以是帐户名称，就像 Azure 一样。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Access Key ID (Account Name)")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _access_key_id { get; set; } = null;


        /// <summary>
        /// <para>Secret Access Key (Account Key)</para>
        /// <para>The secret access key string to authenticate the connection to cloud storage.</para>
        /// <para>用于验证与云存储的连接的秘密访问密钥字符串。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Secret Access Key (Account Key)")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _secret_access_key { get; set; } = null;


        /// <summary>
        /// <para>Region (Environment)</para>
        /// <para>The region string for the cloud storage. If provided, the value must use the format defined by the cloud storage choice. The default is the selected cloud provider's default account.</para>
        /// <para>云存储的区域字符串。如果提供，则该值必须使用云存储选择定义的格式。默认值为所选云提供商的默认帐户。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Region (Environment)")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _region { get; set; } = null;


        /// <summary>
        /// <para>Service End Point</para>
        /// <para>The service endpoint (uris) of the cloud storage, such as oss-us-west-1.aliyuncs.com. If a value is not provided, the default endpoint for the selected cloud storage type will be used. The CNAME redirected endpoint can also be used if needed.</para>
        /// <para>云存储的服务终结点 （uri），例如 oss-us-west-1.aliyuncs.com。如果未提供值，则将使用所选云存储类型的默认终端节点。如果需要，还可以使用 CNAME 重定向终结点。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Service End Point")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _end_point { get; set; } = null;


        /// <summary>
        /// <para>Provider Options</para>
        /// <para><xdoc>
        ///   <para>The configuration options pertaining to the specific type of cloud service. Some services offer options, some do not. You only need to set the option if you want to turn them on.</para>
        ///   <para>Role-based access control (RBAC) is available for both Amazon and Azure cloud providers. Keeping all authentication parameters empty while using an EC2 or Azure virtual machine will enable ArcGIS Pro to access Blob storage using IAM roles or Azure RBAC. For Amazon, IMDSv1 and IMDSv2 are supported.</para>
        ///   <para>Microsoft Azure Data Lake Storage Gen2 follows the same options as Azure but provides true directory support and atomic operations using a DFS endpoint. Some network errors during cloud operations are retried following exponential backoff.</para>
        ///   <para>For performance considerations and additional information, see the GDAL virtual file systems documentation.</para>
        ///   <bulletList>
        ///     <bullet_item>Azure / Microsoft Azure Data Lake
        ///     <bulletList>
        ///       <bullet_item>AZURE_SAS—Specify an shared access signature. Ensure that its value is URL encoded and does not contain leading '?' or '&' characters. When using this option, the Secret Access Key (Account Key) parameter must be empty.  </bullet_item><para/>
        ///       <bullet_item>AZURE_NO_SIGN_REQUEST (default: FALSE)—Anonymously connect to buckets (containers) that don't require authenticated access. When using this option, the Secret Access Key (Account Key) parameter must be empty.  </bullet_item><para/>
        ///       <bullet_item>AZURE_STORAGE_CONNECTION_STRING—Specify an Azure Storage connection string. This string embeds the account name, key, and endpoint. When using this option, the Access Key ID (Account Name) and Secret Access Key (Account Key) parameter must be empty.  </bullet_item><para/>
        ///       <bullet_item>CPL_AZURE_USE_HTTPS (default: TRUE): Set FALSE to use http requests. Note that some servers might be configured to only support https requests.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        ///     <bullet_item>Amazon / MinIO
        ///     <bulletList>
        ///       <bullet_item>AWS_NO_SIGN_REQUEST (default: FALSE)—Anonymously connect to buckets (containers) that don't require authenticated access.  </bullet_item><para/>
        ///       <bullet_item>AWS_SESSION_TOKEN—Specify temporary credentials.  </bullet_item><para/>
        ///       <bullet_item>AWS_DEFAULT_PROFILE—AWS credential profiles are automatically used when Access Key/ID is missing. This option can be used to specify the profile to use.  </bullet_item><para/>
        ///       <bullet_item>AWS_REQUEST_PAYER—Requester Pays buckets can be accessed by setting this option to requester.  </bullet_item><para/>
        ///       <bullet_item>AWS_Virtual_Hosting (default: TRUE)—Amazon S3 and S3 compatible cloud providers supporting only path-style requests must set this option to TRUE. It is recommended that you use virtual hosting if it's supported  </bullet_item><para/>
        ///       <bullet_item>CPL_VSIS3_USE_BASE_RMDIR_RECURSIVE (default: TRUE)— Some older S3 compatible implementations do not support the Bulk Delete operation. Set this option to FALSE for these providers.  </bullet_item><para/>
        ///       <bullet_item>AWS_HTTPS (default: TRUE)—Set FALSE to use http requests. Note that some servers might be configured to only support https requests  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        ///     <bullet_item>Alibaba
        ///     <bulletList>
        ///       <bullet_item>OSS_Virtual_Hosting (default: TRUE)—Alibaba and S3 compatible cloud providers supporting only path-style requests must set this option to TRUE. It is recommended that you use virtual hosting if it's supported.  </bullet_item><para/>
        ///       <bullet_item>OSS_HTTPS (default: TRUE)—Set FALSE to use http requests. Note that some servers might be configured to only support https requests.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        ///     <bullet_item>WebHDFS
        ///     <bulletList>
        ///       <bullet_item>WEBHDFS_REPLICATION (integer)—The replication value is used when creating a file  </bullet_item><para/>
        ///       <bullet_item>WEBHDFS_PERMISSION (decimal)—A permission mask is used when creating a file.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>If multiple authentication parameters are provided, precedence is as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>Azure—AZURE_STORAGE_CONNECTION_STRING, account name / key, AZURE_SAS, AZURE_NO_SIGN_REQUEST, RBAC.</bullet_item><para/>
        ///     <bullet_item>Amazon—AWS_NO_SIGN_REQUEST, access id / key and/or AWS_SESSION_TOKEN, AWS Credential Profile, IAM Role.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Other than the provider options listed above, this option ARC_DEEP_CRAWL (default:TRUE), can be used with all the service providers. If True, this option is used to identify CRFs with no extension in the cloud; this is an expensive operation and it is highly recommended to set this option to FALSE for faster catalog browsing experience and crawling.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>与特定类型的云服务相关的配置选项。有些服务提供选项，有些则不提供。如果您想打开它们，您只需要设置该选项。</para>
        ///   <para>基于角色的访问控制 （RBAC） 适用于 Amazon 和 Azure 云提供商。在使用 EC2 或 Azure 虚拟机时，如果所有身份验证参数保持为空，则 ArcGIS Pro 将能够使用 IAM 角色或 Azure RBAC 访问 Blob 存储。对于 Amazon，支持 IMDSv1 和 IMDSv2。</para>
        ///   <para>Microsoft Azure Data Lake Storage Gen2 遵循与 Azure 相同的选项，但使用 DFS 终结点提供真正的目录支持和原子操作。云操作期间的某些网络错误会在指数回退后重试。</para>
        ///   <para>有关性能注意事项和其他信息，请参阅 GDAL 虚拟文件系统文档。</para>
        ///   <bulletList>
        /// <bullet_item>Azure / Microsoft Azure 数据湖
        ///     <bulletList>
        /// <bullet_item>AZURE_SAS - 指定共享访问签名。确保其值是 URL 编码的，并且不包含前导“？”或“&”字符。使用此选项时，秘密访问密钥（帐户密钥）参数必须为空。 </bullet_item><para/>
        ///       <bullet_item>AZURE_NO_SIGN_REQUEST（默认值：FALSE）- 匿名连接到不需要经过身份验证的访问的存储桶（容器）。使用此选项时，秘密访问密钥（帐户密钥）参数必须为空。 </bullet_item><para/>
        ///       <bullet_item>AZURE_STORAGE_CONNECTION_STRING - 指定 Azure 存储连接字符串。此字符串嵌入帐户名称、密钥和终结点。使用此选项时，Access Key ID （Account Name） 和 Secret Access Key （Account Key） 参数必须为空。 </bullet_item><para/>
        ///       <bullet_item>CPL_AZURE_USE_HTTPS（默认值：TRUE）：设置为 FALSE 以使用 http 请求。请注意，某些服务器可能配置为仅支持 https 请求。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        /// <bullet_item>亚马逊 / MinIO
        ///     <bulletList>
        ///       <bullet_item>AWS_NO_SIGN_REQUEST（默认值：FALSE）- 匿名连接到不需要经过身份验证的访问权限的存储桶（容器）。</bullet_item><para/>
        ///       <bullet_item>AWS_SESSION_TOKEN - 指定临时凭证。</bullet_item><para/>
        ///       <bullet_item>AWS_DEFAULT_PROFILE – 当缺少访问密钥/ID 时，将自动使用 AWS 凭证配置文件。此选项可用于指定要使用的配置文件。 </bullet_item><para/>
        ///       <bullet_item>AWS_REQUEST_PAYER - 可以通过将此选项设置为 Requester 来访问 Requester Pays 存储桶。</bullet_item><para/>
        ///       <bullet_item>AWS_Virtual_Hosting （默认值：TRUE） – 仅支持路径样式请求的 Amazon S3 和 S3 兼容云提供商必须将此选项设置为 TRUE。如果支持虚拟主机，建议您使用虚拟主机 </bullet_item><para/>
        ///       <bullet_item>CPL_VSIS3_USE_BASE_RMDIR_RECURSIVE （默认值：TRUE） — 某些较旧的 S3 兼容实施不支持批量删除操作。对于这些提供程序，将此选项设置为 FALSE。 </bullet_item><para/>
        ///       <bullet_item>AWS_HTTPS（默认值：TRUE）— 将 FALSE 设置为使用 http 请求。请注意，某些服务器可能配置为仅支持 https 请求 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        /// <bullet_item>阿里巴巴
        ///     <bulletList>
        ///       <bullet_item>OSS_Virtual_Hosting（默认值：TRUE）— 仅支持路径式请求的阿里巴巴和 S3 兼容云提供商必须将此选项设置为 TRUE。如果支持虚拟主机，建议您使用虚拟主机。 </bullet_item><para/>
        ///       <bullet_item>OSS_HTTPS（默认值：TRUE）— 将 FALSE 设置为使用 http 请求。请注意，某些服务器可能配置为仅支持 https 请求。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        /// <bullet_item>WebHDFS的
        ///     <bulletList>
        ///       <bullet_item>WEBHDFS_REPLICATION（整数）- 创建文件时使用复制值</bullet_item><para/>
        ///       <bullet_item>WEBHDFS_PERMISSION（十进制）- 创建文件时使用权限掩码。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果提供了多个身份验证参数，则优先级如下：</para>
        ///   <bulletList>
        ///     <bullet_item>Azure - AZURE_STORAGE_CONNECTION_STRING、帐户名/密钥、AZURE_SAS、AZURE_NO_SIGN_REQUEST、RBAC。</bullet_item><para/>
        ///     <bullet_item>Amazon - AWS_NO_SIGN_REQUEST、访问 ID/密钥和/或AWS_SESSION_TOKEN、AWS 凭证配置文件、IAM 角色。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>除了上面列出的提供程序选项外，此选项ARC_DEEP_CRAWL （default：TRUE） 可用于所有服务提供商。如果为 True，则此选项用于识别云中没有扩展名的 CRF;这是一项代价高昂的操作，强烈建议将此选项设置为 FALSE，以获得更快的目录浏览体验和爬网。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Provider Options")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _config_options { get; set; } = null;


        /// <summary>
        /// <para>Output Connection File</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Connection File")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_connection { get; set; }


        /// <summary>
        /// <para>Folder</para>
        /// <para>The folder in the Bucket (Container) Name parameter where the raster dataset will be stored.</para>
        /// <para>存储桶（容器）名称参数中将存储栅格数据集的文件夹。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Folder")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _folder { get; set; } = null;


        public CreateCloudStorageConnectionFile SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}